var express = require('express');
var bodyParser = require('body-parser');
var md5 = require('MD5');
var app = express();

app.all('/*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});

// Config
app.use(express.Router());
app.use(bodyParser());

var mensagensTeste = [];
var mensagensTeste2 = [];

app.put('/meus_dados/alterar_senha/:hash', function(req, res) {
    res.type('application/json');

    var senhaAtual = req.body.senhaAtual;
    var novaSenha = req.body.novaSenha;
    var hash = req.params.hash;

    console.log("senha Atual: " + senhaAtual);
    console.log("nova Senha: " + novaSenha);
    console.log("hash: " + hash);

    var login = new Object();
    login.expirou = false;
    login.value = true;
    return res.json(login);
});

app.post('/mensagens/mensagem/', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var mensagens = new Object();
    var idMensagem = req.body.idMensagem;
    var mensagem = req.body.mensagem;
    var hash = req.body.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar Aviso agem no banco
        var msm = new Object();
        
        if(idMensagem == 1){
            //gambi para simular banco de dados
            mensagensTeste.push(mensagem);
        }else if(idMensagem ==3){
            mensagensTeste2.push(mensagem);
        }

        mensagens.expirou = false;
        mensagens.value = true;

        return res.json(mensagens);
    } else {
        mensagens.expirou = true;
        return res.json(mensagens);
    }
    
});

app.get('/mensagens/mensagem/:idMensagem/:idHash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var mensagens = new Object();
    var listMensagem = [];
    var idMensagem = req.params.idMensagem;
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar Mensagem agem no banco
        if (idMensagem == 1) {
            mensagens.titulo = 'Mensagem1';
            var msm = new Object();
            msm.id = 1;
            msm.tipo = 'enviada';
            msm.conteudo = 'Olá tudo bom? gostaria de saber se terá aula na copa, vcs poderiam me informar?';
            msm.dataHora = new Date();

            var msm2 = new Object();
            msm2.id = 2;
            msm2.tipo = 'resposta';
            msm2.conteudo = 'Bom dia! Não haverá aulas nos dias que tiverem jogo do Brasil!';
            msm2.dataHora = new Date();
            
            listMensagem.push(msm,msm2);
            
            var i = 0;
            setInterval(function() {
                var resp = new Object();
                mensagensTeste.push('resposta '+i++);
            },24000);
            
            //gambi para simular banco
            var numMsn = 2;
            mensagensTeste.forEach(function(texto){
                var msmFor = new Object();
                msmFor.id = numMsn++;
                msmFor.tipo = 'enviada';
                msmFor.conteudo = texto;
                msmFor.dataHora = new Date();
                
                listMensagem.push(msmFor);
            });
            
        }else if(idMensagem ==3){
            mensagens.titulo = 'Mensagem3';
            mensagensTeste2.forEach(function(texto){
                var msmFor = new Object();
                msmFor.id = numMsn++;
                msmFor.tipo = 'enviada';
                msmFor.conteudo = texto;
                msmFor.dataHora = new Date();
                
                listMensagem.push(msmFor);
            });
        }

        mensagens.expirou = false;
        mensagens.values = listMensagem;

        return res.json(mensagens);
    } else {
        mensagens.expirou = true;
        return res.json(mensagens);
    }
    
});

app.post('/mensagens/', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var mensagem = new Object();
    var idMensagem = req.body.idMensagem;
    var titulo = req.body.titulo;
    var hash = req.body.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar Aviso agem no banco      
        
        mensagem.expirou = false;
        mensagem.value = 3;

        return res.json(mensagem);
    } else {
        mensagem.expirou = true;
        return res.json(mensagem);
    } 
});

app.get('/mensagens/:hash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var mensagens = new Object();
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar Aviso agem no banco
        var msm = new Object();
        msm.id = 1;
        msm.titulo = 'Mensagem1';

        var msm2 = new Object();
        msm2.id = 2;
        msm2.titulo = 'Mensagem2';

        mensagens.expirou = false;
        mensagens.values = [msm,msm2];

        return res.json(mensagens);
    } else {
        mensagens.expirou = true;
        return res.json(mensagens);
    }
    
});

app.get('/calendario/:hash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var calendario = new Object();
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar Mensagem no banco
        var data = new Object();
        data.id = 1;
        data.data = new Date(2014, 4, 22);
        data.tipo = 'evento';
        data.resumo = 'Reunião com os pais';
        
        var data2 = new Object();
        data2.id = 2;
        data2.data = new Date(2014, 4, 1);
        data2.tipo = 'feriado';
        data2.resumo = 'Dia do Trabalho';
        
        var data3 = new Object();
        data3.id = 3;
        data3.data = new Date(2014, 0, 1);
        data3.tipo = 'feriado';
        data3.resumo = 'Ano Novo';
        
        var data4 = new Object();
        data4.id = 3;
        data4.data = new Date(2014, 11, 25);
        data4.tipo = 'feriado';
        data4.resumo = 'Natal';
            
        
        calendario.expirou = false;
        calendario.values = [data,data2,data3,data4];

        return res.json(calendario);
    } else {
        calendario.expirou = true;
        return res.json(calendario);
    }
    
});

app.get('/avisos/aviso/:idAviso/:hash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var aviso = new Object();
    var idAviso = req.params.idAviso;
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar Aviso agem no banco
        var msm = new Object();
        if (idAviso == 1) {
            msm.id = 1;
            msm.titulo = 'teste Aviso (titulo)';
            msm.mensagem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam at turpis placerat, viverra augue eu, molestie odio. Quisque sed mi blandit, accumsan neque quis, viverra metus. Vivamus tincidunt lectus diam, porttitor sagittis odio consectetur porta. ';
            msm.remetente = 'Diretor';
        }else if (idAviso == 2) {
            msm.id = 1;
            msm.titulo = 'Mensagem Teste';
            msm.mensagem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam at turpis placerat, viverra augue eu, molestie odio. Quisque sed mi blandit, accumsan neque quis, viverra metus. Vivamus tincidunt lectus diam, porttitor sagittis odio consectetur porta. ';
            msm.remetente = 'Diretor';
        }

        aviso.expirou = false;
        aviso.value = msm;

        return res.json(aviso);
    } else {
        aviso.expirou = true;
        return res.json(aviso);
    }
    
});

app.get('/avisos/:hash', function(req, res) {
    res.type('application/json');

    //verificar tempo de sessão
    var expirou = false;
    var avisos = new Object();

    if (!expirou) {
        //buscar materiais no banco
        var aviso = new Object();
        aviso.id = 1;
        aviso.tipo = 'Aviso';
        aviso.data = '25/05';

        var aviso2 = new Object();
        aviso2.id = 2;
        aviso2.tipo = 'Mensagem';
        aviso2.data = '06/06';

        var aviso3 = new Object();
        aviso3.id = 3;
        aviso3.tipo = 'Passeio';
        aviso3.data = '23/06';


        avisos.expirou = false;
        avisos.values = [aviso, aviso2, aviso3];

        return res.json(avisos);
    } else {
        avisos.expirou = true;
        return res.json(avisos);

    }
});

app.put('/frequencia/motivo/atualizar/:idFrequencia', function(req, res) {
    res.type('application/json');

    var idFrequencia = req.params.idFrequencia;
    var motivo = req.body.motivo;
    var hash = req.body.hash;

    console.log("idFrequencia: " + idFrequencia);
    console.log("motivo: " + motivo);
    console.log("hash: " + hash);

    //verificar hash e sessão
    if (idFrequencia == 1) {
        var login = new Object();
        login.expirou = false;
        login.value = true;
        return res.json(login);
    } else
        return res.json(null);

});

app.post('/frequencia/motivo/salvar', function(req, res) {
    res.type('application/json');

    var idFrequencia = req.body.idFrequencia;
    var motivo = req.body.motivo;
    var hash = req.body.hash;

    console.log("idFrequencia: " + idFrequencia);
    console.log("motivo: " + motivo);
    console.log("hash: " + hash);

    //verificar hash e sessão
    if (idFrequencia == 2) {
        var login = new Object();
        login.expirou = false;
        login.value = true;
        return res.json(login);
    } else
        return res.json(null);


});

app.get('/frequencia/motivo/:idFrequencia/:hash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var motivo = new Object();
    var idFrequencia = req.params.idFrequencia;
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar motivo no banco
        var motivo1 = new Object();

        if (idFrequencia == 1) {
            motivo1.id = 1;
            motivo1.motivo = 'Internação Hospitalar';
        }

        motivo.expirou = false;
        motivo.values = [motivo1];

        return res.json(motivo);
    } else {
        motivo.expirou = true;
        return res.json(motivo);
    }
});

app.get('/frequencia/:hash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var frequencias = new Object();
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar frequencias no banco
        var frequencia1 = new Object();
        var frequencia2 = new Object();

        frequencia1.id = 1;
        frequencia1.dia = 10;
        frequencia1.mes = 'MAIO';

        frequencia2.id = 2;
        frequencia2.dia = 05;
        frequencia2.mes = 'JULHO';

        frequencias.expirou = false;
        frequencias.values = [frequencia1, frequencia2];

        return res.json(frequencias);
    } else {
        frequencias.expirou = true;
        return res.json(frequencias);
    }
});

app.get('/boletim/nota/:idDisciplina/:hash', function(req, res) {
    res.type('application/json');

    var expirou = false;
    var notas = new Object();
    var idDisciplina = req.params.idDisciplina;
    var hash = req.param.hash;

    //verificar tempo de sessão
    if (!expirou) {
        //buscar notas no banco
        var nota1 = new Object();
        var nota2 = new Object();


        console.log('idDisciplina: ' + idDisciplina);
        if (idDisciplina == 1) {
            nota1.id = 1;
            nota1.ordem = 1;
            nota1.nome = 'Prova';
            nota1.nota = 10;

            notas.expirou = false;
            notas.values = [nota1];
        } else if (idDisciplina == 2) {
            nota2.id = 2;
            nota2.ordem = 1;
            nota2.nome = 'Prova';
            nota2.nota = 7;

            notas.expirou = false;
            notas.values = [nota2];
        }

        return res.json(notas);
    } else {
        notas.expirou = true;
        return res.json(notas);

    }
});

app.get('/boletim/:hash', function(req, res) {
    res.type('application/json');

    //verificar tempo de sessão
    var expirou = false;
    var disciplinas = new Object();

    if (!expirou) {
        //buscar materiais no banco
        var disciplina = new Object();
        disciplina.id = 1;
        disciplina.nome = 'matematica';

        var disciplina2 = new Object();
        disciplina2.id = 2;
        disciplina2.nome = 'fisica';

        disciplinas.expirou = false;
        disciplinas.values = [disciplina, disciplina2];

        return res.json(disciplinas);
    } else {
        disciplinas.expirou = true;
        return res.json(disciplinas);

    }
});

app.post('/login/logar', function(req, res) {
    res.type('application/json');

    var matricula = req.body.matricula;
    var senha = req.body.senha;
    console.log("Matricula: " + matricula);
    console.log("Senha: " + senha);

    //verificar login no banco
    if (matricula == 123 & senha == 321) {
        //gerar, salvar e enviar hash
        var hash = md5(matricula + senha + Date.now());
        console.log('hash: ' + hash);
        
        var logado = new Object();
        logado.hash = hash;
        logado.nome = 'Fulano';

        var login = new Object();
        login.acao = 'update';
        login.tabela = 'login';
        login.value = logado;
        return res.json(login);
    } else
        return res.json(null);


});

app.listen(process.env.PORT || 80);
